//
//  WBBaseModel.h
//  WeatherBar
//
//  Created by Bert on 2024/6/7.
//

#import <Foundation/Foundation.h>
#import "MJExtension.h"
#import "BGFMDB.h"
NS_ASSUME_NONNULL_BEGIN

@interface WBBaseModel : NSObject

/// sdWebImage加载图片
/// @param urlString 图片地址
/// @param imageView 要加载的控件
+ (void)modelWithUrlString:(NSString *)urlString imageView:(UIImageView *)imageView;
/**
 *  字典数组转模型数组
 */
+ (NSMutableArray *)modelArrayWithDictArray:(NSArray *)response;

/**
 *  字典转模型
 */
+ (instancetype)modelWithDictionary:(NSDictionary *)dictionary;

/**
 *  模型包含模型数组
 */
+ (void)setUpModelClassInArrayWithContainDict:(NSDictionary *)dict;

/**
 *  字典数组转模型数组
 *  @param dict     模型包含模型数组 格式为 key-字段名字 value-[被包含的类名]
 */
+ (NSMutableArray *)modelArrayWithDictArray:(NSArray *)response containDict:(NSDictionary *)dict;

/**
 模型转字典

 @return 根据模型返回字典 key - value
 */
- (NSMutableDictionary *)model_keyValues;
/// 根据文字计算label的高度
- (CGFloat)getSizeOfString:(NSString *)string font:(UIFont *)font width:(float)width;
/// 根据文字计算自定义行间距的label的高度
- (CGFloat)getSizeOfString:(NSString *)string lineSpace:(CGFloat)lineSpace font:(UIFont *)font width:(float)width;

#pragma mark - 缓存
/*
 使用下面方法进行数据的本地存储会存储到cache目录下，以类名为文件名称，后缀为archive的文件进行保存。
 方便开发者对cache进行统计和清理。
 */

/**
 *  归档 - 存入模型
 */
- (void)archive;

/**
 *  解档 - 取出模型
 */
- (id)unarchiver;

/**
 *  移除缓存中的模型
 */
- (void)remove;
@end

NS_ASSUME_NONNULL_END
